home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Tele / C / Comet2.1.3 Folder / azInclude / TCPPB.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-08-21  |  5.3 KB  |  254 lines  |  [TEXT/MPS ]

  1. /* 
  2.     TCPPB.h    
  3.     C definitions of parameter block entries needed for TCP calls
  4.  
  5.     Copyright Apple Computer, Inc. 1988-89
  6.     All rights reserved
  7.     
  8. */
  9.  
  10. /* Command codes */
  11.  
  12. #define TCPCreate            30
  13. #define    TCPPassiveOpen        31
  14. #define TCPActiveOpen        32
  15. #define TCPSend                34
  16. #define TCPNoCopyRcv        35
  17. #define TCPRcvBfrReturn        36
  18. #define TCPRcv                37
  19. #define TCPClose            38
  20. #define TCPAbort            39
  21. #define TCPStatus            40
  22. #define TCPExtendedStat        41
  23. #define TCPRelease            42
  24. #define TCPGlobalInfo        43
  25. #define TCPCtlMax            49
  26.  
  27. typedef enum TCPEventCode {
  28.     TCPClosing = 1,
  29.     TCPULPTimeout,
  30.     TCPTerminate,
  31.     TCPDataArrival,
  32.     TCPUrgent,
  33.     TCPICMPReceived,
  34.     lastEvent = 65535
  35. };
  36.  
  37. typedef enum TCPTerminationReason {
  38.     TCPRemoteAbort = 2,
  39.     TCPNetworkFailure,
  40.     TCPSecPrecMismatch,
  41.     TCPULPTimeoutTerminate,
  42.     TCPULPAbort,
  43.     TCPULPClose,
  44.     TCPServiceError,
  45.     lastReason = 65535
  46. }; 
  47.  
  48. /* should be "pascal void"
  49. typedef void (*TCPNotifyProc) ();
  50.         StreamPtr tcpStream,
  51.         unsigned short eventCode,
  52.         Ptr userDataPtr,
  53.         unsigned short terminReason,
  54.         struct ICMPReport *icmpMsg
  55. */
  56.  
  57. /* 
  58. typedef void (*TCPIOCompletionProc) ();
  59. had (struct TCPiopb *iopb) arg */
  60.  
  61. typedef unsigned short tcp_port;
  62.  
  63. typedef unsigned char byte;
  64.  
  65. enum {                    /* ValidityFlags */
  66.     timeoutValue = 0x80,
  67.     timeoutAction = 0x40,
  68.     typeOfService = 0x20,
  69.     precedence = 0x10
  70. };
  71.  
  72. enum {                    /* TOSFlags */
  73.     lowDelay = 0x01,
  74.     throughPut = 0x02,
  75.     reliability = 0x04
  76. };
  77.  
  78. typedef struct TCPCreatePB {
  79.     Ptr         rcvBuff;
  80.     unsigned long rcvBuffLen;
  81.     Ptr             notifyProc;                        /* TCPNotifyProc */
  82.     Ptr         userDataPtr;
  83. } TCPCreatePB;
  84.  
  85. typedef struct TCPOpenPB {
  86.     byte ulpTimeoutValue;
  87.     byte ulpTimeoutAction;
  88.     byte validityFlags;
  89.     byte commandTimeoutValue;
  90.     ip_addr remoteHost;
  91.     tcp_port remotePort;
  92.     ip_addr localHost;
  93.     tcp_port localPort;
  94.     byte tosFlags;
  95.     byte precedence;
  96.     Boolean dontFrag;
  97.     byte timeToLive;
  98.     byte security;
  99.     byte optionCnt;
  100.     byte options[40];
  101.     Ptr userDataPtr;
  102. } TCPOpenPB;
  103.     
  104. typedef struct TCPSendPB {
  105.     byte ulpTimeoutValue;
  106.     byte ulpTimeoutAction;
  107.     byte validityFlags;
  108.     Boolean pushFlag;
  109.     Boolean urgentFlag;
  110.     Ptr wdsPtr;
  111.     unsigned long sendFree;
  112.     unsigned short sendLength;
  113.     Ptr userDataPtr;
  114. } TCPSendPB;
  115.     
  116.  
  117. typedef struct TCPReceivePB {        /* for receive and return rcv buff calls */
  118.     byte commandTimeoutValue;
  119.     byte filler;
  120.     Boolean markFlag;
  121.     Boolean urgentFlag;
  122.     Ptr rcvBuff;
  123.     unsigned short rcvBuffLen;
  124.     Ptr rdsPtr;
  125.     unsigned short rdsLength;
  126.     unsigned short secondTimeStamp;
  127.     Ptr userDataPtr;
  128. } TCPReceivePB;
  129.     
  130. typedef struct TCPClosePB {
  131.     byte ulpTimeoutValue;
  132.     byte ulpTimeoutAction;
  133.     byte validityFlags;
  134.     Ptr userDataPtr;
  135. } TCPClosePB;
  136.     
  137. typedef struct HistoBucket {
  138.     unsigned short value;
  139.     unsigned long counter;
  140. };
  141.     
  142. #define NumOfHistoBuckets    7
  143.  
  144. typedef struct TCPConnectionStats {
  145.     unsigned long dataPktsRcvd;
  146.     unsigned long dataPktsSent;
  147.     unsigned long dataPktsResent;
  148.     unsigned long bytesRcvd;
  149.     unsigned long bytesRcvdDup;
  150.     unsigned long bytesRcvdPastWindow;
  151.     unsigned long  bytesSent;
  152.     unsigned long bytesResent;
  153.     unsigned short numHistoBuckets;
  154.     struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
  155.     unsigned short lastRTT;
  156.     unsigned short tmrSRTT;
  157.     unsigned short rttVariance;
  158.     unsigned short tmrRTO;
  159.     byte sendTries;
  160.     byte sourchQuenchRcvd;
  161. } TCPConnectionStats;
  162.     
  163. typedef struct TCPStatusPB {
  164.     byte ulpTimeoutValue;
  165.     byte ulpTimeoutAction;
  166.     long unused;
  167.     ip_addr remoteHost;
  168.     tcp_port remotePort;
  169.     ip_addr localHost;
  170.     tcp_port localPort;
  171.     byte tosFlags;
  172.     byte precedence;
  173.     byte connectionState;
  174.     unsigned short sendWindow;
  175.     unsigned short rcvWindow;
  176.     unsigned short amtUnackedData;
  177.     unsigned short amtUnreadData;
  178.     Ptr securityLevelPtr;
  179.         /* HEMS-HEMP stats */
  180.     unsigned long sendUnacked;
  181.     unsigned long sendNext;
  182.     unsigned long congestionWindow;
  183.     unsigned long rcvNext;
  184.     unsigned long srtt;
  185.     unsigned long lastRTT;
  186.     unsigned long sendMaxSegSize;
  187.     struct TCPConnectionStats *connStatPtr;
  188.     Ptr userDataPtr;
  189. } TCPStatusPB;
  190.     
  191. typedef struct TCPAbortPB {
  192.     Ptr userDataPtr;
  193. } TCPAbortPB;
  194.     
  195. typedef struct TCPParam {
  196.     unsigned long tcpRtoA;
  197.     unsigned long tcpRtoMin;
  198.     unsigned long tcpRtoMax;
  199.     unsigned long tcpMaxSegSize;
  200.     unsigned long tcpMaxConn;
  201.     unsigned long tcpMaxWindow;
  202. } TCPParam;
  203.  
  204. typedef struct TCPStats {
  205.     unsigned long tcpConnAttempts;
  206.     unsigned long tcpConnOpened;
  207.     unsigned long tcpConnAccepted;
  208.     unsigned long tcpConnClosed;
  209.     unsigned long tcpConnAborted;
  210.     unsigned long tcpOctetsIn;
  211.     unsigned long tcpOctetsOut;
  212.     unsigned long tcpOctetsInDup;
  213.     unsigned long tcpOctetsRetrans;
  214.     unsigned long tcpInputPkts;
  215.     unsigned long tcpOutputPkts;
  216.     unsigned long tcpDupPkts;
  217.     unsigned long tcpRetransPkts;
  218. } TCPStats;
  219.     
  220. typedef struct TCPGlobalInfoPB {
  221.     struct TCPParam *tcpParamPtr;
  222.     struct TCPStats *tcpStatsPtr;
  223.     unsigned long *tcpCDBTable;
  224.     Ptr userDataPtr;
  225. } TCPGlobalInfoPB;
  226.     
  227. typedef struct TCPReleasePB {
  228.     Ptr rcvbuf;
  229.     Ptr rcvlen;
  230.     Ptr userDataPtr;
  231. } TCPReleasePB;
  232.     
  233. typedef struct TCPiopb {
  234.     char                 fill12[12];
  235.     Ptr                    ioCompletion;                    /* TCPIOCompletionProc */
  236.     short                 ioResult;
  237.     char                 *ioNamePtr;        
  238.     short                 ioVRefNum;        
  239.     short                ioCRefNum;            
  240.     short                 csCode;
  241.     StreamPtr             tcpStream;                
  242.     union {                                                /* used "struct" */
  243.         struct TCPCreatePB create;
  244.         struct TCPOpenPB open;
  245.         struct TCPSendPB send;
  246.         struct TCPReceivePB receive;
  247.         struct TCPClosePB close;
  248.         struct TCPAbortPB abort;
  249.         struct TCPStatusPB status;
  250.         struct TCPGlobalInfoPB globalInfo;
  251.         struct TCPReleasePB release;
  252.     } csParam;
  253. } TCPiopb;
  254.